package com.wpw.java7demo.jvm;

import java.lang.ref.SoftReference;

public class SoftRef {

	// 声明User类

	public static class User {

		public User(int id, String name) {

			this.id = id;

			this.name = name;

		}

		public int id;

		public String name;

		@Override

		public String toString() {

			return "User [id=" + id + ", name=" + name + "]";

		}

	}

	public static void main(String[] args) {

		User u = new User(1, "geym");// 建立user实例，强引用

		SoftReference<User> userSoftRef = new SoftReference<SoftRef.User>(u);// 通过强引用，建立软引用

		u = null;// 去除强引用

		System.out.println(userSoftRef.get());// 从软引用获取强引用对象

		System.gc();// 垃圾回收

		System.out.println("After GC:");

		System.out.println(userSoftRef.get());// 再次获取软引用中的对象

		byte[] b = new byte[1024 * 1024 * 7];// 分配一块大内存，让系统认为内存紧张

		System.gc();// 垃圾回收

		System.out.println(userSoftRef.get());// 从软引用获取数据

	}

}
